package pe.com.bbva.modpre.persistencia.hibernate;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import pe.com.bbva.modpre.dominio.Membresia;
import pe.com.bbva.modpre.dominio.Preferencia;
import pe.com.bbva.modpre.persistencia.PreferenciaDAO;
import pe.com.bbva.modpre.utileria.Busqueda;

@Repository
@SuppressWarnings("serial")
public class PreferenciaHibernate extends BaseHibernate<Preferencia, Long> 
implements PreferenciaDAO {
	
	@Autowired
	public PreferenciaHibernate(SessionFactory sessionFactory){
		setSessionFactory(sessionFactory);
	}

	@Override
	public Preferencia obtenerPreferencia(Preferencia preferencia) {
		Busqueda filtro = Busqueda.forClass(Preferencia.class);
		if(preferencia!=null){
			if(preferencia.getUsuario()!=null){
				filtro.createAlias("usuario", "u");
				filtro.add(Restrictions.eq("u.id", preferencia.getUsuario().getId()));
			}
			if(preferencia.getTabla()!=null){
				filtro.add(Restrictions.eq("tabla", preferencia.getTabla()));
			}
		}
		
		return obtener(filtro);
	}

	@Override
	public List<Preferencia> busquedaPreferenciasModi(List<Long> idUsuarios) {
		if(idUsuarios.size()>0){
			return buscarHqlParametro("select p from Preferencia p where p.usuario.id in (:idUsuarios)",new String[]{"idUsuarios"},
					new Object[]{idUsuarios});
		}else{
			List<Preferencia> listavacia=new ArrayList<Preferencia>();
			return listavacia;
		}
			
	}
}
